using MediatR;
using System;
using System.Collections.Generic;
using Work.API.Dtos.DrugManagement;
using Work.ErrorCode;

namespace Work.API.Applications.Read.Commands
{
    /// <summary>
    /// 获取检药单列表查询（用于查看检药单模块）
    /// 支持按时间筛选（今天/本周/本月/今年/全部）和患者信息筛选
    /// </summary>
    public class GetInspectionListQuery : IRequest<ApiResult<List<InspectionListDto>>>
    {
        /// <summary>
        /// 挂号编号（精确查询）
        /// </summary>
        public string? RegistrationNum { get; set; }

        /// <summary>
        /// 患者姓名（模糊查询）
        /// </summary>
        public string? PatientName { get; set; }

        /// <summary>
        /// 检查状态（待检查/已检查/已发药）
        /// </summary>
        public string? InspectionStatus { get; set; }

        /// <summary>
        /// 是否已发药（true=已发药，false=未发药，null=全部）
        /// </summary>
        public bool? IsDispensed { get; set; }

        /// <summary>
        /// 开始日期（用于时间范围查询）
        /// </summary>
        public DateTime? StartDate { get; set; }

        /// <summary>
        /// 结束日期（用于时间范围查询）
        /// </summary>
        public DateTime? EndDate { get; set; }

        /// <summary>
        /// 时间筛选类型（今天/本周/本月/今年/全部）
        /// 如果指定了此字段，会自动计算StartDate和EndDate
        /// </summary>
        public string? TimeFilterType { get; set; }
    }
}

